home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_091 / adlrun / adlobjr.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  3KB  |  135 lines

  1. #include <stdio.h>
  2.  
  3. #include "adltypes.h"
  4. #include "adlprog.h"
  5. #include "builtins.h"
  6. #include "adlrun.h"
  7.  
  8.  
  9. setp()
  10. {
  11.     int16
  12.     a, b;        /* Arg1, arg2 */
  13.  
  14.     assertargs( "$setp", 3 );
  15.     a = ARG( 1 );
  16.     b = ARG( 2 );
  17.     if( (a < 0) || (a > NUMOBJ) )
  18.     error( 15 );    /* Illegal object for $setp */
  19.     if( (b < 1) || (b > _ACT) )
  20.     error( 16 );    /* Illegal propnum for $setp */
  21.     if( (b >= 1) && (b <= 16) ) {
  22.     if( ARG( 3 ) )
  23.         objspace[ a ].props1to16 |= bitpat[ b - 1 ];
  24.     else
  25.         objspace[ a ].props1to16 &= ibitpat[ b - 1 ];
  26.     }
  27.     else if( (b >= 17) && (b <= _ACT) )
  28.     objspace[ a ].props[ b - 17 ] = ARG( 3 );
  29. }
  30.  
  31.  
  32. move_obj()
  33. {
  34.     int16
  35.     a, b, t;    /* Arg1, arg2, temp */
  36.  
  37.     assertargs( "$move", 2 );
  38.     a = ARG( 1 );
  39.     b = ARG( 2 );
  40.     if( (a < 0) || (b < 0) || (a > NUMOBJ) || (b > NUMOBJ) )
  41.     error( 17 );    /* Illegal object for $move */
  42.     t = objspace[ a ].loc;
  43.     if( objspace[ t ].cont != a ) {
  44.     t = objspace[ t ].cont;
  45.     while( objspace[ t ].link != a )
  46.         t = objspace[ t ].link;
  47.     objspace[ t ].link = objspace[ objspace[ t ].link ].link;
  48.     }
  49.     else
  50.     objspace[ t ].cont = objspace[ objspace[ t ].cont ].link;
  51.     objspace[ a ].loc = b;
  52.     objspace[ a ].link = 0;
  53.     t = objspace[ b ].cont;
  54.     if( t ) {
  55.     while( objspace[ t ].link )
  56.         t = objspace[ t ].link;
  57.     objspace[ t ].link = a;
  58.     }
  59.     else
  60.     objspace[ b ].cont = a;
  61. }
  62.  
  63.  
  64. objprop( n )
  65. int16
  66.     n;
  67. {
  68.     assertargs( "$prop", 1 );
  69.     if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMOBJ) )
  70.     error( 18 );    /* Illegal object for $prop */
  71.     if( (n >= 1) && (n <= 16) ) {
  72.     if( objspace[ ARG( 1 ) ].props1to16 & bitpat[ n - 1 ] )
  73.         RETVAL = 1;
  74.     else
  75.         RETVAL = 0;
  76.     }
  77.     else if( (n >= 17) && (n <= _ACT) )
  78.     RETVAL = objspace[ ARG( 1 ) ].props[ n - 17 ];
  79.     else
  80.     switch( n ) {
  81.         case _LOC :
  82.         RETVAL = objspace[ ARG( 1 ) ].loc;
  83.         break;
  84.         case _CONT :
  85.         RETVAL = objspace[ ARG( 1 ) ].cont;
  86.         break;
  87.         case _LINK :
  88.         RETVAL = objspace[ ARG( 1 ) ].link;
  89.         break;
  90.         case _MODIF :
  91.         RETVAL = objspace[ ARG( 1 ) ].adj;
  92.         break;
  93.         default :
  94.         error( 19 );        /* Illegal promnum for $prop */
  95.     }
  96. }
  97.  
  98.  
  99. vset()
  100. {
  101.     assertargs( "$vset", 3 );
  102.     if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMVERB) )
  103.     error( 20 );        /* Illegal verb for $vset */
  104.     switch( ARG( 2 ) ) {
  105.     case _PREACT :
  106.         verbspace[ ARG( 1 ) ].preact = ARG( 3 );
  107.         break;
  108.     case _ACT :
  109.         verbspace[ ARG( 1 ) ].postact = ARG( 3 );
  110.         break;
  111.     default     :
  112.         error( 21 );        /* Illegal propnum for $vset */
  113.     }
  114. }
  115.  
  116.  
  117. vprop()
  118. {
  119.     assertargs( "$vprop", 2 );
  120.     if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMVERB) )
  121.     error( 22 );        /* Illegal verb for $vprop */
  122.     switch( ARG( 2 ) ) {
  123.     case _PREACT :
  124.         RETVAL = verbspace[ ARG( 1 ) ].preact;
  125.         break;
  126.     case _ACT :
  127.         RETVAL = verbspace[ ARG( 1 ) ].postact;
  128.         break;
  129.     default :
  130.         error( 23 );        /* Illegal propnum for $vprop */
  131.     }
  132. }
  133.  
  134. /*** EOF adlobjr.c ***/
  135.